home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / progs / editor / frexxed / fpl / querykillchanges.fpl < prev    next >
Text File  |  1995-07-18  |  4KB  |  132 lines

  1. export int Load_hook(string file, string windowtitle, string promptfile)
  2. {
  3.   int changes;
  4.   int ret=0;
  5.   if(changes=ReadInfo("changes"))
  6.     ret=!Request("Do you really want to overwrite your work?\n"
  7.              "You have done " + itoa(changes) + " changes!");
  8.   return(ret);
  9. }
  10.  
  11. export int Kill_hook(int bufferid)
  12. {
  13.   int ret=0;
  14.   if (!bufferid)
  15.     bufferid=GetBufferID();
  16.   if (ReadInfo("shared", bufferid)==1 && (ReadInfo("type", bufferid)&1)) {
  17.         /* Test if this a duplicated bufer,
  18.            if not so we'll check if any changes are done */
  19.   
  20.     int changes=ReadInfo("changes", bufferid);
  21.   
  22.     if (changes) {        /* Some changes have been done! */
  23.       string name = ReadInfo("file_name", bufferid);
  24.       if(!strlen(name)) {
  25.         name = "*noname*";
  26.       }
  27.       ret=Request(itoa(changes) + " changes have been done!\n"
  28.                   "Kill \"" + name + "\" anyway?",
  29.                   "Kill buffer?", "Yes|Save&Kill|No");
  30.       if(2 == ret) {
  31.         if(0 > Save())
  32.           ret = 0;
  33.       }
  34.       ret =!ret;
  35.     }
  36.   }
  37.   return(ret);
  38. }
  39.  
  40. export int Clear_hook(int bufferid)
  41. {
  42.   int ret=0;
  43.  
  44.   if (!bufferid) {
  45.     bufferid=GetBufferID();
  46.     if (ReadInfo("shared", bufferid)==1 && (ReadInfo("type", bufferid)&1)) {
  47.           /* Test if this a duplicated buffer,
  48.              if not so we'll check if any changes are done */
  49.     
  50.       int changes=ReadInfo("changes", bufferid);
  51.     
  52.       if (changes) {        /* Some changes have been done! */
  53.         string name = ReadInfo("file_name", bufferid);
  54.         if(!strlen(name)) {
  55.           name = "*noname*";
  56.         }
  57.         ret=!Request(itoa(changes) + " changes have been done!\n"
  58.                      "Clear \"" + name + "\" anyway?");
  59.       }
  60.     }
  61.   }
  62.   return(ret);
  63. }
  64.  
  65. export int QuitAll_hook()
  66. {
  67.   int firstid=NextBuffer();
  68.   int id=firstid;
  69.   int numofchanged=0;
  70.   int ret=1;
  71.   string str;
  72.   string changed;
  73.  
  74.   do {
  75.     do {
  76.       if (ReadInfo("changes", id) && (ReadInfo("type", id)&1)) {
  77.         numofchanged++;
  78.         if(strlen(ReadInfo("file_name", id)))
  79.           changed += "\""+ReadInfo("file_name", id) + "\"\n";
  80.         else
  81.           changed += "\"*noname*\"\n";
  82.       }
  83.       id=NextBuffer(id);
  84.       if (id == firstid)
  85.         id=0;
  86.     } while (id);
  87.   
  88.     if (numofchanged) {
  89.       if(numofchanged>1)
  90.         str = sprintf("%d buffers are changed!\n\n%s\nQuit anyway?",
  91.                   numofchanged, changed);
  92.       else
  93.         str = sprintf("The buffer %sis changed!\nQuit anyway?", changed);
  94.       ret = Request(str, "Quit information!", "Quit!|Save some|Don't Quit!");
  95.       if(2 == ret) {
  96.         string name;
  97.         int ans;
  98.         /* save some! */
  99.         id = firstid;
  100.         do {
  101.           if (ReadInfo("changes", id) && (ReadInfo("type", id)&1)) {
  102.             name = ReadInfo("file_name", id);
  103.             if(!strlen(name))
  104.               name = "*noname*";
  105.             Activate(id, 2);
  106.             MaximizeView(id);
  107.             ans = Request("Save " + name + "?", "Save?", "Save|Save As|Skip");
  108.             switch(ans) {
  109.               case 1: 
  110.                 ExecuteString("Save();", id); /* save that buffer! */
  111.                 break;
  112.               case 2:
  113.                 ExecuteString("SaveAs();", id); /* save as! */
  114.                 break;
  115.             }
  116.           }
  117.           id=NextBuffer(id);
  118.         } while(id != firstid);      
  119.         numofchanged = 0;
  120.         changed="";
  121.       }
  122.     } else
  123.       break;
  124.   } while (2 == ret);
  125.   return(!ret);
  126. }
  127.  
  128. Hook("Load", "Load_hook");     /* Patch Load() with Load_hook()! */
  129. Hook("Kill", "Kill_hook");     /* Patch Kill() with Kill_hook()! */
  130. Hook("Clear", "Clear_hook");     /* Patch Clear() with Clear_hook()! */
  131. Hook("QuitAll", "QuitAll_hook"); /* Patch QuitAll() with QuitAll_hook()! */
  132.